package 回文子串;

/**
 * @author: AirMan
 * @date: 2025/5/20 14:19
 * @description:
 */
public class Solution3 {
    public int countSubstrings(String s) {
        // 双指针法，从中心往外扩散，寻找回文串，中心有两种方案进行选择
        // 方案一：以 i 为中心进行扩展
        // 方案二：以 i，i+1 两个字符为中心进行扩展

        int result = 0;
        int len = s.length();
        for (int i = 0; i < len; i++) {
            // 以 i 为中心进行扩展
            result += extend(s, i, i);
            // 以 i，i+1 两个字符为中心进行扩展
            result += extend(s, i, i + 1);
        }

        return result;
    }

    public int extend(String s, int left, int right) {
        int result = 0;
        int len = s.length();
        while (left >= 0 && right < len && s.charAt(left) == s.charAt(right)) {
            left--;
            right++;
            result++;
        }
        return result;
    }
}
